package cn.highset.redis.client;


import cn.highset.redis.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;


/**
 * redis 统一客户端
 *
 * @author gg
 * @version redisClient.java, v 0.1 2019-04-04 18:15 gg
 */
@Component
public class RedisClient {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;


    /**
     * key 操作类型 工具类
     *
     * @return RedisKeyService
     */
    public RedisKeyService key() {

        return new RedisKeyService(redisTemplate);
    }

    /**
     * String 操作类型 工具类
     *
     * @return RedisStringService
     */
    public RedisStringService string() {

        return new RedisStringService(redisTemplate);
    }

    /**
     * List 操作类型 工具类
     *
     * @return RedisListService
     */
    public RedisListService list() {

        return new RedisListService(redisTemplate);
    }

    /**
     * Hash 操作类型 工具类
     *
     * @return RedisHashService
     */
    public RedisHashService hash() {

        return new RedisHashService(redisTemplate);
    }

    /**
     * set 操作类型 工具类
     *
     * @return RedisSetService
     */
    public RedisSetService set() {

        return new RedisSetService(redisTemplate);
    }

    /**
     * lock 操作类型 工具类
     *
     * @return RedisSetService
     */
    public RedisLockService lock() {

        return new RedisLockService(redisTemplate);
    }

    /**
     * hll 操作类型 工具类
     *
     * @return RedisSetService
     */
    public RedisHllService hll() {

        return new RedisHllService(redisTemplate);
    }

}